home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / c / sozobon / sozbin14.zoo / sozdistr / doc / sozobon.doc < prev   
Text File  |  1995-09-09  |  25KB  |  679 lines

  1.  
  2.             The Sozobon C Compiler
  3.  
  4.                eXtended Version
  5.  
  6.              a freeware offering
  7.               maintained by Jerry G. Geiger
  8.  
  9.              based on the SOZOBON 2.00 release
  10.                   by
  11.                Sozobon, Limited
  12.  
  13.  
  14.  
  15.                 Users Reference
  16.  
  17.  
  18.  
  19.       1. Introduction
  20.  
  21.       The Sozobon C Compiler is a complete implementation of the C
  22.       language as defined by Kernighan & Ritchie and prevailing
  23.       practice.  It is on the way to being compatible with ANSI/POSIX
  24.       standards.  The package includes a compiler, optimizer, assembler,
  25.       linker, and several other associated utilities.  For runtime
  26.       library support, xdlibs, a library based on the public domain
  27.       dLibs routines and some other different libraries are used.
  28.  
  29.       This extended SOZOBON version is based on Sozobon 2.00 (c) by
  30.      Sozobon Ltd: Tony Andrews, Johann Ruegg, and Joe Treat.
  31.       It's Runtime library is based on dLibs library by Dale Schumacher.
  32.       The GEM libary is based on GEMFast library by Ian Lepore.
  33.  
  34.  
  35.       1.1 Copyright and Disclaimer
  36.  
  37.       Like the original library packages and original Sozobon versions,
  38.       the eXtended Version of the Sozobon compiler including all
  39.       executables and other components may be freely distributed.
  40.  
  41.       The extended version of the Sozobon C compiler can be freely
  42.       distributed, as long as you don't modify the copyright and mark
  43.       changed parts clearly.
  44.       You may not charge any money for copying the three Sozobon
  45.       archives, or their contents or parts of them.  You may not include
  46.       them in any public domain/Shareware disk libraries for the
  47.       purposes of sale (even for a minimal charge).
  48.  
  49.       IN NO EVENT WILL I AND/OR ANY OTHER PARTY BE LIABLE TO YOU FOR DAMAGES,
  50.       INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL
  51.       OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
  52.       (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
  53.       INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
  54.       PROGRAMS TO OPERATE WITH OTHER PROGRAMS) THE PROGRAMS, EVEN IF YOU HAVE
  55.       BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY
  56.       ANY OTHER PARTY.
  57.       This goes for the libraries too, of course.
  58.  
  59.       Berlin, Nov 1993 and again now: Mar 2 1994, October 1994,
  60.         February 1995
  61.         Jerry G. Geiger
  62.       Aachen, Sep 1995
  63.         Volker Seebode
  64.  
  65.  
  66.  
  67.       2. Development Environment
  68.  
  69.       This  section  describes    in  more  detail  the  operation of the
  70.       compiler    and  the relationship between parts of the compiler and
  71.       the corresponding pieces of the Alcyon compiler.
  72.  
  73.       The compiler works best when used with a shell like 'bash', 'tcsh',
  74.       'mupfel' or similiar.
  75.  
  76.       There is a special GEM based shell called C-Desk, by Holger Weets,
  77.       for those who dislike make-files and command line environments.
  78.  
  79.       The  compiler should be usable on machines with 512K and a single
  80.       disk.  This  document  does not  describe  the  optimal layout for
  81.       various  ST  configurations, but you can probably figure out what
  82.       makes  the  most    sense  for  your  machine.   This will probably
  83.       involve  a  RAM disk,  and  some    arrangement  of  programs  and
  84.       libraries on one or more floppies.
  85.  
  86.       2.1 Environment Variables
  87.  
  88.       Several environment variables may be used to alter the operation
  89.       of the compiler.    The variables are used to specify the location
  90.       of executables, header files, libraries, and temporary files.
  91.  
  92.       Some variables may reference a list of directories to be searched,
  93.       with elements of the list separated by commas or semicolons.  The
  94.       variables are:
  95.  
  96.        SOZBIN
  97.        PATH      (executables, list of paths)
  98.              (\usr\bin)
  99.              (where make and cc find the components, ':' are
  100.              possible as seperators, too)
  101.        INCLUDEDIR     (std header file path: one path)
  102.                 hcc replaces the builtin paths with this path 
  103.              (\usr\include)
  104.        SOZINC,
  105.        INCLUDE     list of directories with header files
  106.                      used instead of builtins or $INCLDUEDIR
  107.        LIBDIR     (libraries, startup modules: one path)
  108.              (\usr\lib)
  109.        SOZLIB,
  110.        LIB         list of directories with libraries
  111.                      used instead of builtins or $LIBDIR
  112.        TMPDIR     (temporary files: one path)
  113.              (\usr\tmp)
  114.       If you have not specified a LIBDIR or INCLUDEDIR variable, the builtin
  115.       pathes are searched for if $INCLUDE or $LIB isn't set.
  116.  
  117.       cc or hcc and ld will built their own $LIB / $INCLUDE if these
  118.       variables are not set from the $LIBDIR and $INCLUDEDIR pathes and
  119.       some builtin names. While hcc and ld only handle the 'xdlibs'
  120.       directory in this pathes, cc can switch to different libraries with
  121.       the --mint --c68 and --dlibs options.
  122.       
  123.       So cc assumes to find in the path $INCLUDEDIR the directories
  124.       'xdlibs', 'mntinc' and 'dlibs' with the special library header files 
  125.       in them. A INCLUDE variable built by cc from 
  126.                 INCLUDEDIR=u:\usr\include
  127.       would be:
  128.                 INCLDUE=u:\usr\include\xdlibs,u:\usr\include
  129.  
  130.       A $LIB variable built by cc would be in the same case (default) with a
  131.                 LIBDIR=u:\usr\lib
  132.       specified:
  133.                 LIB=u:\usr\lib\sozobonx\xdlibs,u:\usr\lib\sozobonx
  134.       and with the --mint option:
  135.                 LIB=u:\usr\lib\sozobonx\mntlib,u:\usr\lib\sozobonx
  136.  
  137.  
  138.       2.2 Recommanded Directory Structure
  139.  
  140.       Unpacking the distribution will create this structure in a 
  141.       directory 'sozdistr' but not in '\usr'.
  142.  
  143.     \usr\bin\
  144.         cc.ttp, hcc.ttp, ... (all the executables)
  145.     \usr\include\
  146.             xdlibs\...
  147.             mntinc\...
  148.             dlibs\...
  149.             ... (general header files)
  150.     \usr\lib\
  151.         sozobonx\
  152.             xdlibs\...
  153.             mntlib\...
  154.             dlibs\...
  155.             ... (general SozobonX libraries)
  156.         c68\
  157.            xdlibs\...
  158.            mntlib\...
  159.            ... (general c68 libraries)
  160.  
  161.  
  162.       3. Types and Other Compiler Dependencies
  163.  
  164.       3. 1. The supported data types and their sizes (in bytes) are:
  165.  
  166.        void        0
  167.        char        1
  168.        short       2
  169.        int           2 (switchable to 4)
  170.        long        4
  171.        unsigned char   1
  172.        unsigned short  2
  173.        unsigned int    2 (switchable to 4)
  174.        unsigned long   4
  175.        float       4
  176.        double       8 (IEEE)
  177.        POINTER       4
  178.  
  179.  
  180.       Floating point math is supported using the "Fast Floating Point"
  181.       representation documented by Motorola and IEEE format for doubles.
  182.       Both 'float' and 'double' types are supported, but printf() e.g.
  183.       only supports doubles.
  184.  
  185.       Any of the basic data types may be declared as register variables.
  186.       Pointers occupy the A registers, all other types are placed in D
  187.       registers.  Six data registers and five address registers are
  188.       available for use by register variables.
  189.  
  190.       3.2 Compiler Limits
  191.  
  192.       Some limits imposed by the Sozobon compiler are:
  193.  
  194.      * Local  variables  are  limited to a total of 32K in size per
  195.        function.
  196.  
  197.      * The size of a single structure may not exceed 32K.
  198.  
  199.      * Include files may not be nested more than 8 deep.
  200.  
  201.      * Identifiers may be of any length, and are case significant.
  202.  
  203.      * Arrays may not exceed 0x80000000 bytes, so the largest index of
  204.        a char array is 0x7fffffff. Arrays larger than 64K
  205.        may cause some trouble, but they should work.
  206.  
  207.      * The switch expressions may be of any integer type (char, short,
  208.        or long).
  209.  
  210.       3.3 Constants and implicit types
  211.  
  212.      * The resulting type of sizeof() is unsigned int by default.
  213.        There is a warning generated if sizeof() exceeds 64K, in which
  214.        case you should assign the sizeof() expression to a long
  215.        variable. If the result exceeds 0x7fffffff Bytes an error
  216.        message is printed. Since HCC pl34 you may switch the type
  217.        of sizeof() to unsigned long.
  218.  
  219.      * Integer constants are of the smallest type they fit in (char,
  220.        short, or long) unless they are noted as octal or hexadecimal
  221.        constants, which are unsigned by default.  You can force a
  222.        constant to be a long value using hexadecimal notation with
  223.        leading '0' characters; '0x0000ff00' will be long like
  224.        '0xff00L'
  225.  
  226.       * Arrays' index expressions are normally casted to long integer.
  227.  
  228.  
  229.       3.4 extensions to K&R compatibility
  230.  
  231.      * bit fields - now standard fields: first in decl is MSB
  232.  
  233.          * long bit fields implemented ( unsigned long foo : 25; )
  234.  
  235.      * enumerations
  236.  
  237.      * structure assignment
  238.  
  239.      * structure parameters
  240.  
  241.      * structure return values
  242.  
  243.      * assembly escapes
  244.  
  245.      * multibyte constants
  246.  
  247.      * ANSI function declarations
  248.  
  249.      * type checking of arguments to parameters in function calls
  250.  
  251.      * void type, pointer to void
  252.  
  253.      * string concats
  254.  
  255.      * variable Parameters ('...') in function declarations
  256.  
  257.      * all ANSI keywords
  258.  
  259.       Most of the features listed above are self-explanatory.  Assembly
  260.       code can be embedded within C using the following syntax:
  261.  
  262.        asm("assembly code");
  263.  
  264.       The string within quotes is passed directly to the output file.
  265.       It is preceded by a tab, and followed by a newline, so these do
  266.       not need to be given in the string.  Extreme caution should be
  267.       used when running the optimizer on C code that contains assembly
  268.       escapes.    For access to variables put the name of the variable in
  269.       angle-brackets like:
  270.  
  271.           asm(" move.l #1, <i>");
  272.  
  273.       3.5 Missing ANSI C compatibility
  274.  
  275.       Not implemented is:
  276.  
  277.       * type checking of arguments to parameters in function calls
  278.  
  279.       * the keywords const and volatile are not working at all
  280.  
  281.       * '#elif' is not known to the builtin preprocessor
  282.  
  283.  
  284.  
  285.       4.0  The components of Sozobon eXtended version
  286.  
  287.  
  288.       The binaries are maintained by different people now! So please
  289.       read in the man files where to send your bugreports. Please mention
  290.       the version and patchlevel you can find with '-V' option or the
  291.       'ident' tool you may have in your enviroment! 
  292.       
  293.       This is not a complete description of all the binaries of Sozobon.
  294.       If you have installed Sozobon completely you will have access to
  295.       the detailed description in the man files (typing 'man <name>' or
  296.       using the ST-Guide HyperText system). Maybe you have printed them.
  297.  
  298.       The excutables will (soon) know all some common options.    The
  299.       directly called ones (make, cc, ar, nm, ipc and mkptypes) will
  300.       accept the following multiletter options:
  301.  
  302.       --version
  303.     Print a detailed version description and exit.
  304.  
  305.       --help
  306.     Print a help-page (short description of all options) and exit.
  307.  
  308.       All will know the following options:
  309.  
  310.       -V (same as --version)
  311.  
  312.       -v verbose output
  313.  
  314.       -h (same as --help) or a usage message (hcc, top, jas, ld)
  315.  
  316.  
  317.       4.1 cc - run the compiler components
  318.  
  319.       The features and options are discribed in file cc.man, which is a
  320.       copy of man\cat1\cc.1 you have copied in your $MANPATH\cat1 directory.
  321.  
  322.       This is the most important program if you use SOZOBONX with
  323.       makefiles or in a cli shell (e.g.  Gemini's console window). It
  324.       will run all the passes to generate an excutable or object
  325.       modules.
  326.  
  327.       The compiler converts your source code to assembly language so
  328.       that the optimizer can optimize it, the assembler can convert it
  329.       to an object file, and the linker can generate an executable from
  330.       it and some library stuff.
  331.  
  332.       cc now supports another compiler, Thorsten Roskowetz's c68 port, too.
  333.       It should be available in an archive 'sozc68<nn>.lzh', including a
  334.       MiNT library for this compiler. Therefore Scotts Bigham's 'cpp' is
  335.       now included in the SozobonX distribution.
  336.  
  337.  
  338.       4.2 hcc - The Compiler
  339.  
  340.       The compiler generates error messages if there are problems with
  341.       your source code.  It includes a preprocessor wich can handle
  342.       statements like:
  343.  
  344.     #assert <expression>
  345.  
  346.       If expression is false the compile session aborts.
  347.  
  348.     #error "string"
  349.  
  350.       The compile session will stop, and error <string> will be
  351.       displayed.
  352.  
  353.     #pragma <option> <arguments>
  354.  
  355.       For information on #pragma commands, see the manual file (hcc.man).
  356.  
  357.  
  358.       The following MACROS are implemented:
  359.       These are'defined', and you can manipulate them:
  360.  
  361.     MC68000, mc68000, SOZOBON (value is 0x200)
  362.     ATARI_ST, TOS,    __TOS__, __SOZOBONX__ (value is current version),
  363.     __MSHORT__ (if ints are of type short) __STDC__
  364.  
  365.       These conatain strings with usefull information, you can not change
  366.       them, except the first two, with a special preprocessor statement.
  367.       (see man file for more details)
  368.     __LINE__, __FILE__, __BASE_FILE__, __VERSION__
  369.     __TIME__, __DATE__, __SDATE__, __STIME__, __GDATE__
  370.  
  371.  
  372.       The  compiler  uses  the    "normal"  68000  C calling conventions.
  373.       Register    A6  is    used  as  a  frame pointer, and function return
  374.       values  are  placed in D0.
  375.  
  376.       gemdos(), bios() and xbios() calls are replaced by quasi-inline
  377.       functions - the trap instruction is generated.
  378.  
  379.  
  380.       floating point arithmetics
  381.  
  382.       The compiler supports float types (4 Bytes, Motorola's fast floating
  383.       point scheme) and double types - the IEEE 64 Bit values.
  384.       Think of: the math library functions and printf() only accept
  385.                 double values.
  386.  
  387.  
  388.       bit fields
  389.       
  390.       Are now standard fields: first bit in decl, or more precise MSB in
  391.       first expession of the bit field declaration is MSB in the whole 
  392.       field.
  393.       There are long bit fields implemented now, exceeding 16 bits for
  394.       single expression: (e.g. unsigned long foo : 25; )
  395.  
  396.  
  397.       4.2.1 Profiling
  398.  
  399.       To use profiling, invoke cc with the -p option.  The compiler will
  400.       generate additional code: At begin of every function a function
  401.          'void _prolog(char funcname[])'    and at end a function
  402.      'void _epilog(char funcname[])'    is called. They count the
  403.       number of calls to each function, and time each call. To get this
  404.       profiling information you have to call the function
  405.          'void _safeprof()'.
  406.  
  407.       All these functions exist in the library (file extended.lib). The
  408.       funktion '_safeprof()' writes all of the profiling stuff to a file
  409.       called '.\prof.out'. If you use the 'prof_s.o' startup module,
  410.       this function is automatically called when your program exits.  cc
  411.       will make use of this startup module if called with option '-p'.
  412.       You can of course repleace these functions by your own ones.
  413.  
  414.       4.2.2 Source Level Debugging
  415.  
  416.       To use source level debugging, invoke cc/hcc with the Option
  417.       '-X<n>[function]'. The compiler generates additional code
  418.       according to level <n> in the option.  You can specify a function
  419.       which is called by this code at the begin and end of every
  420.       function reached at runtime.  In loops this function is usually
  421.       called, too.  If you don't specify a function, only the line
  422.       number and the file name the module was compiled from is saved. 
  423.       You can use the function '_debug' from the library file
  424.       'libextra.a' or write an own function.  If you specify level 2
  425.       with the <n> option this function is called one time for every
  426.       line in the source code.  If you don't specify a function at all,
  427.       the level option is ignored. The exception signals are caught then,
  428.       and an error message is printed via Salert() function, or written
  429.       to stderr if not available. The special modules used for this
  430.       feature (except.a) will be told the linker, if you call
  431.       cc with the '-X'option. 
  432.  
  433.       The above mentioned function '_debug()' from libraray archive
  434.       'libextra.a' is the interface to Holger Weets' and Christian
  435.       Wempes's source level debugger. If you specify this function with the
  436.       '-X' option, it is linked into your program.
  437.       This debugger uses BIOS console for output, and assumes 24 lines
  438.       in the output window. It will prompt for an command after
  439.       invocation by the _debug() function:
  440.       --------------
  441.       Sozobon Online Debugger V1.0 -- Written by C. Wempe & H. Weets, 1992
  442.       current position: line <number> of file <source file>
  443.       >
  444.       --------------
  445.       Where line <number> is the number of the line in the <source file>
  446.       from which the current code is compiled.
  447.  
  448.       The following commands are implemented:
  449.  
  450.       ?                       - display this help
  451.       b [file [start [end]]]  - show/set breakpoint and position
  452.       c [start [count]]       - display lines of source file
  453.       f                       - free loaded file
  454.       g [cnt]                 - continue with program
  455.       l [filename]            - Load file (default: actual file)
  456.       m [start [end]]         - memory dump
  457.       n                       - display actual line
  458.       q                       - quit program (call exit)
  459.       r                       - display registers
  460.       t                       - toggle meaning of return key
  461.       x                       - exit debugging (never return)
  462.       reg=value               - set value of register (reg = d0-d7,a0-a7)
  463.       reg&value               - mask register
  464.       [$|%]number             - displays <number> in DEC, BIN and HEX 
  465.  
  466.       4.2.3
  467.  
  468.       For more information and the commandline options see the hcc man
  469.       file (hcc.man)
  470.  
  471.  
  472.       4.3 top - The Optimizer
  473.  
  474.       The optimizer can vastly improve your program;  executed between
  475.       the compiler and the assembler, the optimzer removes segments of
  476.       code that are not efficient and replaces them with code that is.
  477.       When variables can be registered (for faster access) this is also
  478.       done.  For more information about the optimizer, please consult
  479.       the manual file (top.man).
  480.  
  481.  
  482.       4.4  jas - The Assembler
  483.  
  484.       The assembler converts the output of the compiler into an object
  485.       file so that the linker can deal with it.  It can read usual
  486.       Motorola 68000 assembler code, written by hand, too.  For more
  487.       information about the assembler, please consult the manual file
  488.       (jas.man).
  489.  
  490.  
  491.       4.5  ld - The Linker
  492.  
  493.       The linker is the last step performed in a compilation;  it takes
  494.       all of the source code modules of a program and gathers them into
  495.       a single object file, then prepends the startup code to the object
  496.       and takes some used functions from the libraries, to form an
  497.       executable program.  For more information on the linker, please
  498.       consult the ld manual file (ld.man).
  499.  
  500.  
  501.       4.6  The Libraries
  502.  
  503.       SOZOBON eXtended version comes along with XdLibs, based on the the
  504.       dLibs library routines, written by Dale Schumacher.  A GEM library
  505.       is included, too.  It is based on Ian Lepore's GEMfast library.
  506.       A ST-Guide hypertext documentation of the libraries is to find
  507.       in this distribution, made by Michel Forget from XdLibs.doc
  508.       and the other library doc files.
  509.  
  510.       You can tell 'cc' what runtime library you want to be linked; it will
  511.       get the right file and the right starupcode:
  512.  
  513.       default is : (taking libs from 'sozobonx' directory)
  514.       -mshort
  515.      xdlibs/crt0.o (startup) and xdlibs/libc.a (library) for some 
  516.         functions you need ty specify '-lextra' to get 
  517.                 xdlibs/libextra.a as additional library
  518.  
  519.       other options:
  520.       --dlibs
  521.      dstart.o and dlibs.a get used
  522.  
  523.       --mint    (the libraries will soon exist)
  524.      mntlib/ctr0.o and mntlib/libc.a are used
  525.  
  526.       -mlong    (not yet implemented, for the libraries don't exist)
  527.      xdlibs/crt032.o and xdlibs/libc32.a will get used.
  528.  
  529.       --c68    (libraries are taken form c68 directory, not the
  530.               sozobonx one; this will change soon cause c68 is
  531.         nearly compatible to hcc)
  532.  
  533.       4.6.1 Startup Code
  534.  
  535.       The startup code is the entry point of a program, doing some basic
  536.       things, and not at least calling your 'main()' function.
  537.       So the startup modules are used to link programs.  Different moduls
  538.       are in this distribution, the default startup module is 'crt0.o'.
  539.       In the file 'soz_libs.hyp' you will find a chapter about startup
  540.       modules, and the file 'startup.txt' is the same in ascii.
  541.  
  542.  
  543.       4.6.2  XdLibs  The C Runtime Library
  544.  
  545.       See the file 'xdlibs.doc' for a complete documentation of the runtime
  546.       library. It is included in the 'soz_libs.hyp' hyper text file, too.
  547.       The standard library modules are to find in the files 'libc.a'
  548.       and 'libextra.a'. The last one contains rarely used functions and
  549.       extensions to the C standard library.
  550.       With this release 'libc.a' contains all floating point code, too.
  551.  
  552.       One traditional problem with C compilers and floating point is that
  553.       as soon as you call printf(), you wind up linking in a bunch of
  554.       floating point code whether you need it or not.  To avoid this
  555.       problem there is now a different solution:
  556.  
  557.       There is an additional library 'libci.a' which is used by cc unless
  558.       you specify '-f' or '-lm', it's the integer only library with no
  559.       floating point support at all.
  560.       There may be libraries like 'libi.a' e.g. in MiNT directory containing
  561.       printf and scanf routines for integer only programs. You will have to
  562.       write a '-li' in cc's commandline to make use of them.
  563.  
  564.  
  565.       4.6.3  libm.a  The Mathematics Floating Point Library
  566.  
  567.       Just add '-lm' to your commandline and cc will force ld to
  568.       link from the math library 'libm.a'. You don't need an extra '-f'
  569.       cc won't use the integer only library with this argument.
  570.  
  571.       The library itself is a port of the 'pml' - portable math library
  572.       by Fred Fish.
  573.  
  574.  
  575.       4.6.4 GEM libraries
  576.  
  577.       You will find two GEM libraries in this distribution, xvdifast.a
  578.       and xaesfast.a.  They are bug-fixed and/or extended versions of
  579.       the well known gemfast library.
  580.  
  581.  
  582.       4.6.5 utility libraries
  583.  
  584.       Some utility libraries are added to this distribution (util.a and
  585.       gemlib.a).
  586.  
  587.  
  588.       4.7 make
  589.  
  590.       Now there is a make.man in this distribution, and you will find
  591.       a file make.doc - discussing make in general.
  592.  
  593.       make is a tool to make something, not only programs from source
  594.       code. You can describe what is to do and the relationships among
  595.       the files in a 'makefile'; and each time you change some files the
  596.       simple shell command 'make' suffices to perform all necessary
  597.       actions (recompilations). make knows how to make an executable from
  598.       source files and can learn new rules, too.
  599.  
  600.  
  601.       4.8 ipc  The Include Pre Compiler
  602.  
  603.       This program by Holger Weets will precompile your header files, to
  604.       get them read faster by hcc.  Since header ('*.h') files rarely
  605.       change, this utility was created to allow you to compile them in
  606.       advance so that they do not have to be compiled every time your
  607.       source code is compiled.  This can greatly speed up the
  608.       compilation process.  For more information on the include file
  609.       precompiler, please read the manual file (ipc.man).
  610.  
  611.  
  612.       4.9 mkptypes   Make Function Prototypes
  613.  
  614.       The mkptypes program will generate header files from C source files,
  615.       to be included as global access function declarations in any
  616.       header files, or as static function declarations in your sourcefiles.
  617.       Please read the manual file (mkptypes.man).
  618.  
  619.       4.10 library utilities
  620.  
  621.       4.10.1 nm
  622.  
  623.       The 'nm' program dumps the symbol table of object files,
  624.       libraries, and executables.  The output is not in standard form,
  625.       yet.  See manual (nm.man).
  626.  
  627.       4.10.2 ar
  628.  
  629.       The 'ar' program manages libraries, especially of object modules.
  630.       See manual (ar.man).
  631.  
  632.       4.10.3 har   Holger's Archiver.
  633.  
  634.       This is a 'ar' utility with a GEM/AES interface for interactive
  635.       dealing with library archives.
  636.  
  637.  
  638.       4.11 pflags
  639.  
  640.       The pflags program sets and shows execution flags in the program
  641.       header. See manual for details (pflags.man).
  642.        
  643.  
  644.       4.12 tagfile    Make Tag Files
  645.  
  646.       This utility generates 'tagfiles' from source files, for usage by
  647.       C-Desk and QED/ACE or e.g. your editor - if you can tell it what a
  648.       tagfile is for. The tagfiles are used by the debugger 'debug' to
  649.       get some information about the bug's location, too.
  650.  
  651.  
  652.       4.13 clint
  653.  
  654.       This program is not standard 'lint' utility, but was written by
  655.       Holger Weets for testing and checking source code as well. There is
  656.       no english documentation available this time, maybe soon.
  657.  
  658.  
  659.       4.15 debug    Debugger
  660.  
  661.       A small debugger by Holger Weets just to get some information
  662.       where a exception causing bug is located in your source files.
  663.       (It makes use of existing tagfiles)
  664.  
  665.       4.16 szadb    Debugger
  666.  
  667.       Not in this distribution, I am going to ask Michal Jaegermann
  668.       for support.
  669.  
  670.       4.17 Some unchanged programs from original Sozobon 2.00 distribution:
  671.  
  672.      * The    'size'    utility  prints the size of text, data, and bss
  673.        for objects, libraries, and executables.
  674.  
  675.      * The    'globs'  program  isn't very useful unless you have the
  676.        Alcyon  compiler.  It  removes  local  symbols  from  object
  677.  
  678. -eof-
  679.